;(assert(osoba(nazwa cyklista)(koszt 0)(szybkosc 20)(bezpieczenstwo 40)(wygoda 40)(pojazd_mechaniczny tak)(rodzaj_pojazdu rower)))

(deftemplate rower
	(slot rodzaj)
	(slot ilosc_blotnikow(type INTEGER))
	(slot swiatla)
	(slot stan_techniczny (allowed-values dobry przecietny beznadziejny) (default przecietny))
	(slot zapasowa_dentka (allowed-values tak nie))
	(slot latwy_w_naprawie (allowed-values tak nie) (default tak))
)

(deftemplate akcja_rowerzysty
	(slot typ_akcji)
)

;(deffacts akcje_rowerzysty
;(akcja_rowerzysty(typ_akcji jazda))
;(akcja_rowerzysty(typ_akcji zlapal_gume))
;(akcja_rowerzysty(typ_akcji zmokniety_rowerzysta))
;(akcja_rowerzysty(typ_akcji zmiana_dentki))
;)

(defrule sprawdz-warunki-pogodowe
	?o <- (osoba (nazwa ?na) (szybkosc ?sz) (pojazd_mechaniczny ?pm) (wygoda ?wyg) (rodzaj_pojazdu ?rw) (polozenie ?po))
	?p <- (polaczenie (skad ?po) (dokad ?do) (czynne ?cz) (rodzaj ?ro))
	?pog <-(pogoda (typ ?typ))
	?row <-(rower (ilosc_blotnikow ?bl))
	?akc <- (akcja_rowerzysty(typ_akcji ?akk))
	=>
	(if (= (str-compare ?rw "rower") 0)
	then(
		if (= (str-compare ?typ "deszcz") 0)
		then(
			if (= ?bl 0)
			then				
				(modify ?akc(typ_akcji zmokniety_rowerzysta))
				(modify ?o (wygoda (- ?wyg 10)) (szybkosc(- ?sz 5)))
			
		)
	
	)))



(defrule zalapanie-gumy
	?who <- (osoba (rodzaj_pojazdu rower))
	?r <- (rower (zapasowa_dentka ?zd))
	?ak <- (akcja_rowerzysty (typ_akcji ?zl))
	=>
	(if (= (str-compare ?zl "zlapal_gume") 0)
	then
		(if (= (str-compare ?zd "nie") 0)
		then
			(modify ?who (szybkosc 10)(bezpieczenstwo 80)(wygoda 50)(pojazd_mechaniczny nie)(rodzaj_pojazdu brak) )
			(modify ?ak(typ_akcji idzie_pieszo))
		)
	)
)

(defrule zalapanie-gumy2
	?who <- (osoba (rodzaj_pojazdu rower))
	?r <- (rower (zapasowa_dentka ?zd))
	?ak <-(akcja_rowerzysty (typ_akcji ?zl))
	=>
	(if (= (str-compare ?zl "zlapal_gume") 0)
	then
		(if (= (str-compare ?zd "tak") 0)
		then
			(modify ?ak(typ_akcji zmiana_dentki))
			(modify ?r(zapasowa_dentka nie))	
		)
	)
)
(defrule change_akcja
	?ak <-(akcja_rowerzysty (typ_akcji ?zl))
	?who <- (osoba (rodzaj_pojazdu rower))
	?r <- (rower (zapasowa_dentka ?zd))
	=>
	(if (= (str-compare ?zl "zmiana_dentki") 0)
	then
		(modify ?ak(typ_akcji jazda))))